package demo1;

abstract public class Shape {//同时 类也需要使用abstract修饰
    //int age;//和普通类一样可以创建变量 构造方法 方法
    abstract public void draw();//不需要执行的方法称为抽象方法 需要使用abstract修饰
                                //不能把抽象使用private final static修饰 因为需要进行重写
}

abstract class A extends Shape {
    abstract public void eat();
    //如果不想进行初始化 需要把类也改为抽象类
}

class B extends A {//当进行多层继承时 需要重写继承类内所有抽象方法
    @Override
    public void eat() {
        System.out.println("吃");
    }

    @Override
    public void draw() {
        System.out.println("画A");
    }
}
class Rect extends Shape {
    @Override
    public void draw() {
        System.out.println("画矩形");//创建类继承抽象类必须进行重写
    }
}

class Cycle extends Shape {
    @Override
    public void draw() {
        System.out.println("画圆");
    }
}

class Triangle extends Shape {
    @Override
    public void draw() {
        System.out.println("画三角形");
    }
}

class Flower extends Shape {
    @Override
    public void draw() {
        System.out.println("画❀");
    }
}
